Page({
  data: {
    isRealName: false, // 实名状态
    name: "", // 姓名
    idNumber: "", // 身份证号
    userDetails: null, // 用户详情
  },

  onLoad(options) {
    // 从跳转参数中获取 isRealName
    const isRealName = options.isRealName === "true"; // 将字符串转换为布尔值
    this.setData({
      isRealName,
    });

    // 如果已实名，从本地存储中获取实名信息
    if (isRealName) {
      const userDetails = wx.getStorageSync("userDetails");
      if (userDetails) {
        this.setData({
          name: userDetails.name,
          idNumber: userDetails.idNumber,
        });
      }
    }
  },

  // 姓名输入事件
  onNameChange(event) {
    this.setData({
      name: event.detail,
    });
  },

  // 身份证号输入事件
  onIdNumberChange(event) {
    this.setData({
      idNumber: event.detail,
    });
  },

  // 提交实名认证
  onSubmit() {
    const { name, idNumber } = this.data;

    // 校验姓名和身份证号是否为空
    if (!name || !idNumber) {
      wx.showToast({
        title: "请填写完整信息",
        icon: "none",
      });
      return;
    }

    // 校验身份证号格式
    if (!validateIdNumber(idNumber)) {
      wx.showToast({
        title: "身份证号格式不正确",
        icon: "none",
      });
      return;
    }

    // 提交实名认证信息
    wx.request({
      url: "http://localhost:8080/user/user/update", // 实名认证接口
      method: "PUT",
      header: {
        "Content-Type": "application/json",
        token: wx.getStorageSync("userInfo").data.token, // 携带 token
      },
      data: {
        name,
        idNumber,
      },
      success: (res) => {
        if (res.statusCode === 200) {
          wx.showToast({
            title: "实名认证成功",
            icon: "success",
          });

          // 更新本地存储中的用户信息
          let userDetails = wx.getStorageSync("userDetails");
          userDetails.name = name;
          userDetails.idNumber = idNumber;
          wx.setStorageSync("userDetails", userDetails);

          // 更新页面数据
          this.setData({
            isRealName: true,
          });
        } else {
          wx.showToast({
            title: "实名认证失败",
            icon: "none",
          });
        }
      },
      fail: (err) => {
        console.error("请求失败:", err);
        wx.showToast({
          title: "网络错误，请重试",
          icon: "none",
        });
      },
    });
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {},

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {},

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {},

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {},

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {},

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {},

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {},
});

/**
 * 校验大陆身份证号码
 * @param {string} idNumber 身份证号码
 * @returns {boolean} 是否合法
 */
function validateIdNumber(idNumber) {
  // 正则表达式：15位或18位身份证号码
  const reg = /(^\d{15}$)|(^\d{17}(\d|X|x)$)/;
  return reg.test(idNumber);
}
